import vue from '@vitejs/plugin-vue'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
import { defineConfig } from 'vite'
import dotenv from 'dotenv'
import vueJsx from '@vitejs/plugin-vue-jsx'
// 没有后端的时候可以把这个开启，使用后端把这个注释
import apiServe from 'vite-plugin-api-serve'
// 引入vue等自动导入插件
import AutoImport from 'unplugin-auto-import/vite'

import zh_hans from './src/plugins/zh-hans.json'
// 在正式打包的时候，可以把这两行代码放开
import Components from 'unplugin-vue-components/vite'
import { ArcoResolver } from 'unplugin-vue-components/resolvers'


// 注意只在生产环境下添加rollup插件，开发模式下会报错
const plugins: any = [
  vue(),
  // 自动导入插件
  AutoImport({
    imports: ['vue'],
    dts: 'src/auto-import.d.ts'
  }),
  createSvgIconsPlugin({
    iconDirs: [path.resolve(process.cwd(), 'src/icons')],
    symbolId: 'icon-[dir]-[name]',
  }),
  vueJsx(),
  // apiServe()
]

if (process.env.NODE_ENV !== 'development') {
  // 生产环境
  plugins.push(Components({
    resolvers: [ArcoResolver()],
  }),)
}

export default defineConfig(({ mode }) => {
  const dotenvConfig = dotenv.config({ path: `./.env.${mode}` })
  const dotenvObj = dotenvConfig.parsed

  return {
    base: dotenvObj?.VITE_BUILD_PATH || '/singleProject/',
    build: {
      outDir: dotenvObj?.BUILD_OUT_DIR || 'singleProject',
      minify: "terser",
      terserOptions: {
        compress: {
          // 生产环境时移除所有的console
          drop_console: true,
          // 只移除console.log
          pure_funcs: ["console.log"],
        },
      },
      rollupOptions: {
        output: {
          manualChunks(id) {
            if (id.includes('node_modules')) {
              return id.toString().split('node_modules/')[1].split('/')[0].toString()
            }
          },
        },
      },
    },
    plugins,
    css: {
      preprocessorOptions: {
        less: {
          additionalData: `@import "src/styles/variables.less";`,
          modifyVars: {},
          javascriptEnabled: true,
        },
      },
    },
    resolve: {
      alias: [
        {
          find: '@/',
          replacement: path.resolve(process.cwd(), 'src') + '/',
        },
      ],
    },
    server: {
      host: "0.0.0.0",
      open: true,
      // 如果需要本地代理解决跨域问题，则需要把下面代码注释关闭
      proxy: {
        '/dev-api': {
          // 以下为实际请求地址，注意域名部分不要写成 localhost 要用 ip：127.0.0.1 代替
          // 如：http://localhost:8888 要写成：http://127.0.0.1:8888
          target: 'http://10.70.95.218:8088',
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/dev-api/, '')
        },
      },
    }
  }
})
